① 이번 예제에서 할 작업
기존 인벤토리 레이아웃에 가짜 보관함 버튼을 추가하고, PC 보관함에 필요한 좌측 도킹바를 병합합니다. 컨트롤러는 버튼 클릭을 중계하는 전용 action JSON 2개도 복사합니다.

② 수정할 파일
[수정할 기존 파일]
- data/global/ui/layouts/playerinventoryoriginallayouthd.json
- data/global/ui/layouts/playerinventoryexpansionlayouthd.json
- data/global/ui/layouts/controller/playerinventoryoriginallayouthd.json
- data/global/ui/layouts/controller/playerinventoryexpansionlayouthd.json
- data/global/ui/layouts/bankexpansionlayouthd.json

[새로 복사할 파일]
- data/global/ui/layouts/fakestashcontrolleroriginalactionhd.json
- data/global/ui/layouts/fakestashcontrollerexpansionactionhd.json

[복사할 에셋]
- data/hd/global/ui/panel/utility_buttons/fake_stash_button.sprite
- data/hd/global/ui/panel/utility_buttons/fake_stash_button.lowend.sprite

③ 찾아야 할 위치
PC 인벤토리 2개는 파일 맨 위의 루트 "children": [ 배열을 찾습니다. 기존 "fake_stash_button"이 있으면 그 항목만 제거합니다.
컨트롤러 인벤토리 2개도 루트 children에 버튼을 넣습니다. 추가로 "name": "gold_button"을 찾아 이미 존재하는 fields.navigation 안의 right 값만 바꿉니다. navigation 자체가 없다면 새로 만들지 않습니다.
PC bankexpansionlayouthd.json에서는 루트 children을 사용합니다.

④ 실제로 삽입/수정할 코드
- PC 버튼: 수동병합용/가짜보관함_PC_버튼.json의 객체 전체
- 컨트롤러 오리지널: 수동병합용/가짜보관함_컨트롤러_오리지널_버튼.json
- 컨트롤러 확장: 수동병합용/가짜보관함_컨트롤러_확장_버튼.json
- PC 도킹바: 수동병합용/가짜보관함_PC_좌측도킹바.json

컨트롤러 gold_button의 기존 navigation 안에서는 다음 한 항목만 사용합니다.
"right": { "name": "fake_stash_button" }

PC bank 루트 children에서 이름이 StashLeftDockingBar인 기존 항목이 있으면 제거한 뒤 조각을 넣습니다. StashOpenPanelBorders / StashOpenPlayerInventory 및 이름 끝이 Stash_LeftDockingBar / Stash_OpenPanelBorders / Stash_OpenPlayerInventory인 이 모드의 구형 companion 항목도 제거합니다.

⑤ 삽입 후 형태
"children": [
  ...기존 항목...,
  { "type": "ButtonWidget", "name": "fake_stash_button", "fields": { ... } }
]

⑥ 적용 원리
PC 버튼은 BankExpansionLayout을 직접 엽니다. 컨트롤러 버튼은 전용 relay panel을 통해 현재 인벤토리를 닫고 보관함을 연 뒤 인벤토리를 다시 여는 원본 D2RMM 동작을 그대로 사용합니다. 관계없는 children과 fields는 수정하지 않습니다.
